Windows Server 2022 で Windows Subsystem for Linux 2 (WSL 2) が使えるようになりました
Windows ServerでもWSL 2を使いたいな
こんにちは、のんピ(@non____97)です。
皆さんはWindows ServerでWindows Subsystem for Linux 2(以降、WSL 2)を使いたいと思ったことはありますか? 私はあります。
私はWindows 10やWindows 11のマシンを持っていないので、WSL 2に触れる機会がありませんでした。
以下の記事を見てからというもの、触ってみたいと常日頃思っていました。
そんな折、Windows Server 2022でWSL 2が使えるようなったとアナウンスがありました。
これは試すしかない
ということで、Windows Server 2022のEC2インスタンスでWSL 2を起動できるか試してみました。
いきなりまとめ
- WSL 2を使用するにはハードウェアレベルで仮想化をサポートしている必要がある
- AWS上でWSL 2を使用するにはベアメタルインスタンス上で動作させる必要がある
wsl --install
はWSLの機能有効化前に行う必要がある- 手動でWSLの機能を有効化した場合は以下操作を行う必要がある
- WSL 2 Linux カーネル更新プログラムのインストール
VirtualMachinePlatform
機能の有効化
wsl --install
での設定が簡単
Windows Server 2022でやってみた
インスタンスタイプの選定
早速、やってみます。
WSL 2を使用するにはハードウェアレベルで仮想化をサポートしている必要があります。
通常のインスタンスタイプではEC2インスタンス上に仮想マシンのハイパーバイザーを立てる、Nested Virtualizationをサポートしていません。そのため、仮想化レイヤを経由せずに直接Intel VT-xなどのハードウェアへのアクセスが可能なベアメタルインスタンスを使う必要があります。
実際、ベアメタルインスタンスでないt3.micro
のEC2インスタンスでWSL 2をインストールして、Ubuntu 20.04を起動しようとすると、以下のようなエラーが出力されます。
Installing, this may take a few minutes... WslRegisterDistribution failed with error: 0x80370102 Error: 0x80370102 The virtual machine could not be started because a required feature is not installed. Press any key to continue...
t3.microで起動したEC2インスタンスのシステム情報を確認すると、ハイパーバイザーが検出されたことにより、Hyper-Vに必要な機能は表示されませんでした。
PS C:\Windows\system32> systeminfo Host Name: EC2AMAZ-DPKA9LC OS Name: Microsoft Windows Server 2022 Datacenter OS Version: 10.0.20348 N/A Build 20348 OS Manufacturer: Microsoft Corporation OS Configuration: Standalone Server OS Build Type: Multiprocessor Free Registered Owner: EC2 Registered Organization: Amazon.com Product ID: 00454-60000-00001-AA527 Original Install Date: 6/23/2022, 8:04:18 AM System Boot Time: 6/23/2022, 9:22:12 AM System Manufacturer: Amazon EC2 System Model: t3.micro System Type: x64-based PC Processor(s): 1 Processor(s) Installed. [01]: Intel64 Family 6 Model 85 Stepping 4 GenuineIntel ~2500 Mhz BIOS Version: Amazon EC2 1.0, 10/16/2017 Windows Directory: C:\Windows System Directory: C:\Windows\system32 Boot Device: \Device\HarddiskVolume1 System Locale: en-us;English (United States) Input Locale: en-us;English (United States) Time Zone: (UTC) Coordinated Universal Time Total Physical Memory: 996 MB Available Physical Memory: 410 MB Virtual Memory: Max Size: 2,020 MB Virtual Memory: Available: 1,105 MB Virtual Memory: In Use: 915 MB Page File Location(s): C:\pagefile.sys Domain: WORKGROUP Logon Server: N/A Hotfix(s): 3 Hotfix(s) Installed. [01]: KB5013890 [02]: KB5014678 [03]: KB5014030 Network Card(s): 1 NIC(s) Installed. [01]: Amazon Elastic Network Adapter Connection Name: Ethernet DHCP Enabled: Yes DHCP Server: 172.31.0.1 IP address(es) [01]: 172.31.10.163 [02]: fe80::14df:4a22:9e59:159 Hyper-V Requirements: A hypervisor has been detected. Features required for Hyper-V will not be displayed.
一方、ベアメタルインスタンスであるm5zn.metal
でシステム情報を確認すると、ファームウェアレベルで仮想化が有効になっていることをOSから認識できます。
PS C:\Windows\system32> systeminfo Host Name: EC2AMAZ-N3F7GIK OS Name: Microsoft Windows Server 2022 Datacenter OS Version: 10.0.20348 N/A Build 20348 OS Manufacturer: Microsoft Corporation OS Configuration: Standalone Server OS Build Type: Multiprocessor Free Registered Owner: EC2 Registered Organization: Amazon.com Product ID: 00454-60000-00001-AA588 Original Install Date: 6/23/2022, 6:33:46 AM System Boot Time: 6/23/2022, 6:42:07 AM System Manufacturer: Amazon EC2 System Model: m5zn.metal System Type: x64-based PC Processor(s): 2 Processor(s) Installed. [01]: Intel64 Family 6 Model 85 Stepping 7 GenuineIntel ~3800 Mhz [02]: Intel64 Family 6 Model 85 Stepping 7 GenuineIntel ~3800 Mhz BIOS Version: Amazon EC2 1.0, 10/16/2017 Windows Directory: C:\Windows System Directory: C:\Windows\system32 Boot Device: \Device\HarddiskVolume1 System Locale: en-us;English (United States) Input Locale: N/A Time Zone: (UTC) Coordinated Universal Time Total Physical Memory: 196,241 MB Available Physical Memory: 192,096 MB Virtual Memory: Max Size: 200,081 MB Virtual Memory: Available: 196,102 MB Virtual Memory: In Use: 3,979 MB Page File Location(s): C:\pagefile.sys Domain: WORKGROUP Logon Server: N/A Hotfix(s): 3 Hotfix(s) Installed. [01]: KB5013890 [02]: KB5014678 [03]: KB5014030 Network Card(s): 1 NIC(s) Installed. [01]: Amazon Elastic Network Adapter Connection Name: Ethernet 3 DHCP Enabled: Yes DHCP Server: 172.31.0.1 IP address(es) [01]: 172.31.3.55 [02]: fe80::f806:43c1:2e49:728f Hyper-V Requirements: VM Monitor Mode Extensions: Yes Virtualization Enabled In Firmware: Yes Second Level Address Translation: Yes Data Execution Prevention Available: Yes
タスクマネージャーからもVirtualization
がEnabled
になっていることが分かります。
OSのビルド番号の確認
次に、OSのビルド番号の確認を行います。
先ほどのMicrosoft公式ブログによると、2022年5月24日のKB5014021(OSビルド20348.740)
がインストールされている必要があるようです。
2022/6/23時点で最新のWindows Server 2022のAMIであるWindows_Server-2022-English-Full-Base-2022.06.15 (ami-0e1a729017e59e409)
でEC2インスタンスを起動してOSのビルド番号を確認します。
起動したEC2インスタンス上のコマンドプロンプトからOSのビルド番号が20348.740
以上になっていることを確認します。
C:\Windows\system32>ver Microsoft Windows [Version 10.0.20348.768]
20348.768
であることから前提条件は満たしているようです。
WSL 2の起動
それでは、先ほどのMicrosoft公式ブログに従い、WSL 2のインストール、起動を行います。
まず、WSLの機能を有効化します。
# 機能一覧の確認 PS C:\Windows\system32> Get-WindowsFeature Display Name Name Install State ------------ ---- ------------- [ ] Active Directory Certificate Services AD-Certificate Available [ ] Certification Authority ADCS-Cert-Authority Available [ ] Certificate Enrollment Policy Web Service ADCS-Enroll-Web-Pol Available [ ] Certificate Enrollment Web Service ADCS-Enroll-Web-Svc Available [ ] Certification Authority Web Enrollment ADCS-Web-Enrollment Available [ ] Network Device Enrollment Service ADCS-Device-Enrollment Available [ ] Online Responder ADCS-Online-Cert Available [ ] Active Directory Domain Services AD-Domain-Services Available [ ] Active Directory Federation Services ADFS-Federation Available [ ] Active Directory Lightweight Directory Services ADLDS Available [ ] Active Directory Rights Management Services ADRMS Available [ ] Active Directory Rights Management Server ADRMS-Server Available [ ] Identity Federation Support ADRMS-Identity Available [ ] Device Health Attestation DeviceHealthAttestat... Available [ ] DHCP Server DHCP Available [ ] DNS Server DNS Available [ ] Fax Server Fax Available [X] File and Storage Services FileAndStorage-Services Installed [ ] File and iSCSI Services File-Services Available [ ] File Server FS-FileServer Available [ ] BranchCache for Network Files FS-BranchCache Available [ ] Data Deduplication FS-Data-Deduplication Available [ ] DFS Namespaces FS-DFS-Namespace Available [ ] DFS Replication FS-DFS-Replication Available [ ] File Server Resource Manager FS-Resource-Manager Available [ ] File Server VSS Agent Service FS-VSS-Agent Available [ ] iSCSI Target Server FS-iSCSITarget-Server Available [ ] iSCSI Target Storage Provider (VDS and V... iSCSITarget-VSS-VDS Available [ ] Server for NFS FS-NFS-Service Available [ ] Work Folders FS-SyncShareService Available [X] Storage Services Storage-Services Installed [ ] Host Guardian Service HostGuardianServiceRole Available [ ] Hyper-V Hyper-V Available [ ] Network Controller NetworkController Available [ ] Network Policy and Access Services NPAS Available [ ] Print and Document Services Print-Services Available [ ] Print Server Print-Server Available [ ] Internet Printing Print-Internet Available [ ] LPD Service Print-LPD-Service Available [ ] Remote Access RemoteAccess Available [ ] DirectAccess and VPN (RAS) DirectAccess-VPN Available [ ] Routing Routing Available [ ] Web Application Proxy Web-Application-Proxy Available [ ] Remote Desktop Services Remote-Desktop-Services Available [ ] Remote Desktop Connection Broker RDS-Connection-Broker Available [ ] Remote Desktop Gateway RDS-Gateway Available [ ] Remote Desktop Licensing RDS-Licensing Available [ ] Remote Desktop Session Host RDS-RD-Server Available [ ] Remote Desktop Virtualization Host RDS-Virtualization Available [ ] Remote Desktop Web Access RDS-Web-Access Available [ ] Volume Activation Services VolumeActivation Available [ ] Web Server (IIS) Web-Server Available [ ] Web Server Web-WebServer Available [ ] Common HTTP Features Web-Common-Http Available [ ] Default Document Web-Default-Doc Available [ ] Directory Browsing Web-Dir-Browsing Available [ ] HTTP Errors Web-Http-Errors Available [ ] Static Content Web-Static-Content Available [ ] HTTP Redirection Web-Http-Redirect Available [ ] WebDAV Publishing Web-DAV-Publishing Available [ ] Health and Diagnostics Web-Health Available [ ] HTTP Logging Web-Http-Logging Available [ ] Custom Logging Web-Custom-Logging Available [ ] Logging Tools Web-Log-Libraries Available [ ] ODBC Logging Web-ODBC-Logging Available [ ] Request Monitor Web-Request-Monitor Available [ ] Tracing Web-Http-Tracing Available [ ] Performance Web-Performance Available [ ] Static Content Compression Web-Stat-Compression Available [ ] Dynamic Content Compression Web-Dyn-Compression Available [ ] Security Web-Security Available [ ] Request Filtering Web-Filtering Available [ ] Basic Authentication Web-Basic-Auth Available [ ] Centralized SSL Certificate Support Web-CertProvider Available [ ] Client Certificate Mapping Authentic... Web-Client-Auth Available [ ] Digest Authentication Web-Digest-Auth Available [ ] IIS Client Certificate Mapping Authe... Web-Cert-Auth Available [ ] IP and Domain Restrictions Web-IP-Security Available [ ] URL Authorization Web-Url-Auth Available [ ] Windows Authentication Web-Windows-Auth Available [ ] Application Development Web-App-Dev Available [ ] .NET Extensibility 3.5 Web-Net-Ext Available [ ] .NET Extensibility 4.8 Web-Net-Ext45 Available [ ] Application Initialization Web-AppInit Available [ ] ASP Web-ASP Available [ ] ASP.NET 3.5 Web-Asp-Net Available [ ] ASP.NET 4.8 Web-Asp-Net45 Available [ ] CGI Web-CGI Available [ ] ISAPI Extensions Web-ISAPI-Ext Available [ ] ISAPI Filters Web-ISAPI-Filter Available [ ] Server Side Includes Web-Includes Available [ ] WebSocket Protocol Web-WebSockets Available [ ] FTP Server Web-Ftp-Server Available [ ] FTP Service Web-Ftp-Service Available [ ] FTP Extensibility Web-Ftp-Ext Available [ ] Management Tools Web-Mgmt-Tools Available [ ] IIS Management Console Web-Mgmt-Console Available [ ] IIS 6 Management Compatibility Web-Mgmt-Compat Available [ ] IIS 6 Metabase Compatibility Web-Metabase Available [ ] IIS 6 Management Console Web-Lgcy-Mgmt-Console Available [ ] IIS 6 Scripting Tools Web-Lgcy-Scripting Available [ ] IIS 6 WMI Compatibility Web-WMI Available [ ] IIS Management Scripts and Tools Web-Scripting-Tools Available [ ] Management Service Web-Mgmt-Service Available [ ] Windows Deployment Services WDS Available [ ] Deployment Server WDS-Deployment Available [ ] Transport Server WDS-Transport Available [ ] Windows Server Update Services UpdateServices Available [ ] WID Connectivity UpdateServices-WidDB Available [ ] WSUS Services UpdateServices-Services Available [ ] SQL Server Connectivity UpdateServices-DB Available [ ] .NET Framework 3.5 Features NET-Framework-Features Available [ ] .NET Framework 3.5 (includes .NET 2.0 and 3.0) NET-Framework-Core Removed [ ] HTTP Activation NET-HTTP-Activation Available [ ] Non-HTTP Activation NET-Non-HTTP-Activ Available [X] .NET Framework 4.8 Features NET-Framework-45-Fea... Installed [X] .NET Framework 4.8 NET-Framework-45-Core Installed [ ] ASP.NET 4.8 NET-Framework-45-ASPNET Available [X] WCF Services NET-WCF-Services45 Installed [ ] HTTP Activation NET-WCF-HTTP-Activat... Available [ ] Message Queuing (MSMQ) Activation NET-WCF-MSMQ-Activat... Available [ ] Named Pipe Activation NET-WCF-Pipe-Activat... Available [ ] TCP Activation NET-WCF-TCP-Activati... Available [X] TCP Port Sharing NET-WCF-TCP-PortShar... Installed [ ] Background Intelligent Transfer Service (BITS) BITS Available [ ] IIS Server Extension BITS-IIS-Ext Available [ ] Compact Server BITS-Compact-Server Available [ ] BitLocker Drive Encryption BitLocker Available [ ] BitLocker Network Unlock BitLocker-NetworkUnlock Available [ ] BranchCache BranchCache Available [ ] Client for NFS NFS-Client Available [ ] Containers Containers Available [ ] Data Center Bridging Data-Center-Bridging Available [ ] Direct Play Direct-Play Available [ ] Enhanced Storage EnhancedStorage Available [ ] Failover Clustering Failover-Clustering Available [ ] Group Policy Management GPMC Available [ ] Host Guardian Hyper-V Support HostGuardian Available [ ] I/O Quality of Service DiskIo-QoS Available [ ] IIS Hostable Web Core Web-WHC Available [ ] Internet Printing Client Internet-Print-Client Available [ ] IP Address Management (IPAM) Server IPAM Available [ ] LPR Port Monitor LPR-Port-Monitor Available [ ] Management OData IIS Extension ManagementOdata Available [ ] Media Foundation Server-Media-Foundation Available [ ] Message Queuing MSMQ Available [ ] Message Queuing Services MSMQ-Services Available [ ] Message Queuing Server MSMQ-Server Available [ ] Directory Service Integration MSMQ-Directory Available [ ] HTTP Support MSMQ-HTTP-Support Available [ ] Message Queuing Triggers MSMQ-Triggers Available [ ] Multicasting Support MSMQ-Multicasting Available [ ] Routing Service MSMQ-Routing Available [ ] Message Queuing DCOM Proxy MSMQ-DCOM Available [X] Microsoft Defender Antivirus Windows-Defender Installed [ ] Multipath I/O Multipath-IO Available [ ] MultiPoint Connector MultiPoint-Connector Available [ ] MultiPoint Connector Services MultiPoint-Connector... Available [ ] MultiPoint Manager and MultiPoint Dashboard MultiPoint-Tools Available [ ] Network Load Balancing NLB Available [ ] Network Virtualization NetworkVirtualization Available [ ] Peer Name Resolution Protocol PNRP Available [ ] Quality Windows Audio Video Experience qWave Available [ ] RAS Connection Manager Administration Kit (CMAK) CMAK Available [ ] Remote Assistance Remote-Assistance Available [ ] Remote Differential Compression RDC Available [ ] Remote Server Administration Tools RSAT Available [ ] Feature Administration Tools RSAT-Feature-Tools Available [ ] SMTP Server Tools RSAT-SMTP Available [ ] BitLocker Drive Encryption Administratio... RSAT-Feature-Tools-B... Available [ ] BitLocker Drive Encryption Tools RSAT-Feature-Tools-B... Available [ ] BitLocker Recovery Password Viewer RSAT-Feature-Tools-B... Available [ ] BITS Server Extensions Tools RSAT-Bits-Server Available [ ] DataCenterBridging LLDP Tools RSAT-DataCenterBridg... Available [ ] Failover Clustering Tools RSAT-Clustering Available [ ] Failover Cluster Management Tools RSAT-Clustering-Mgmt Available [ ] Failover Cluster Module for Windows ... RSAT-Clustering-Powe... Available [ ] Failover Cluster Automation Server RSAT-Clustering-Auto... Available [ ] Failover Cluster Command Interface RSAT-Clustering-CmdI... Available [ ] IP Address Management (IPAM) Client IPAM-Client-Feature Available [ ] Network Load Balancing Tools RSAT-NLB Available [ ] Shielded VM Tools RSAT-Shielded-VM-Tools Available [ ] SNMP Tools RSAT-SNMP Available [ ] Storage Migration Service Tools RSAT-SMS Available [ ] Storage Replica Module for Windows Power... RSAT-Storage-Replica Available [ ] System Insights Module for Windows Power... RSAT-System-Insights Available [ ] WINS Server Tools RSAT-WINS Available [ ] Role Administration Tools RSAT-Role-Tools Available [ ] AD DS and AD LDS Tools RSAT-AD-Tools Available [ ] Active Directory module for Windows ... RSAT-AD-PowerShell Available [ ] AD DS Tools RSAT-ADDS Available [ ] Active Directory Administrative ... RSAT-AD-AdminCenter Available [ ] AD DS Snap-Ins and Command-Line ... RSAT-ADDS-Tools Available [ ] AD LDS Snap-Ins and Command-Line Tools RSAT-ADLDS Available [ ] Hyper-V Management Tools RSAT-Hyper-V-Tools Available [ ] Hyper-V GUI Management Tools Hyper-V-Tools Available [ ] Hyper-V Module for Windows PowerShell Hyper-V-PowerShell Available [ ] Remote Desktop Services Tools RSAT-RDS-Tools Available [ ] Remote Desktop Gateway Tools RSAT-RDS-Gateway Available [ ] Remote Desktop Licensing Diagnoser T... RSAT-RDS-Licensing-D... Available [ ] Remote Desktop Licensing Tools RDS-Licensing-UI Available [ ] Windows Server Update Services Tools UpdateServices-RSAT Available [ ] API and PowerShell cmdlets UpdateServices-API Available [ ] User Interface Management Console UpdateServices-UI Available [ ] Active Directory Certificate Services Tools RSAT-ADCS Available [ ] Certification Authority Management T... RSAT-ADCS-Mgmt Available [ ] Online Responder Tools RSAT-Online-Responder Available [ ] Active Directory Rights Management Servi... RSAT-ADRMS Available [ ] DHCP Server Tools RSAT-DHCP Available [ ] DNS Server Tools RSAT-DNS-Server Available [ ] Fax Server Tools RSAT-Fax Available [ ] File Services Tools RSAT-File-Services Available [ ] DFS Management Tools RSAT-DFS-Mgmt-Con Available [ ] File Server Resource Manager Tools RSAT-FSRM-Mgmt Available [ ] Services for Network File System Man... RSAT-NFS-Admin Available [ ] Network Controller Management Tools RSAT-NetworkController Available [ ] Network Policy and Access Services Tools RSAT-NPAS Available [ ] Print and Document Services Tools RSAT-Print-Services Available [ ] Remote Access Management Tools RSAT-RemoteAccess Available [ ] Remote Access GUI and Command-Line T... RSAT-RemoteAccess-Mgmt Available [ ] Remote Access module for Windows Pow... RSAT-RemoteAccess-Po... Available [ ] Volume Activation Tools RSAT-VA-Tools Available [ ] Windows Deployment Services Tools WDS-AdminPack Available [ ] RPC over HTTP Proxy RPC-over-HTTP-Proxy Available [ ] Setup and Boot Event Collection Setup-and-Boot-Event... Available [ ] Simple TCP/IP Services Simple-TCPIP Available [ ] SMB 1.0/CIFS File Sharing Support FS-SMB1 Available [ ] SMB 1.0/CIFS Client FS-SMB1-CLIENT Available [ ] SMB 1.0/CIFS Server FS-SMB1-SERVER Available [ ] SMB Bandwidth Limit FS-SMBBW Available [ ] SMTP Server SMTP-Server Available [ ] SNMP Service SNMP-Service Available [ ] SNMP WMI Provider SNMP-WMI-Provider Available [ ] Software Load Balancer SoftwareLoadBalancer Available [ ] Storage Migration Service SMS Available [ ] Storage Migration Service Proxy SMS-Proxy Available [ ] Storage Replica Storage-Replica Available [X] System Data Archiver System-DataArchiver Installed [ ] System Insights System-Insights Available [ ] Telnet Client Telnet-Client Available [ ] TFTP Client TFTP-Client Available [ ] VM Shielding Tools for Fabric Management FabricShieldedTools Available [ ] WebDAV Redirector WebDAV-Redirector Available [ ] Windows Biometric Framework Biometric-Framework Available [ ] Windows Identity Foundation 3.5 Windows-Identity-Fou... Available [ ] Windows Internal Database Windows-Internal-Dat... Available [X] Windows PowerShell PowerShellRoot Installed [X] Windows PowerShell 5.1 PowerShell Installed [ ] Windows PowerShell 2.0 Engine PowerShell-V2 Removed [ ] Windows PowerShell Desired State Configurati... DSC-Service Available [ ] Windows PowerShell Web Access WindowsPowerShellWeb... Available [ ] Windows Process Activation Service WAS Available [ ] Process Model WAS-Process-Model Available [ ] .NET Environment 3.5 WAS-NET-Environment Available [ ] Configuration APIs WAS-Config-APIs Available [ ] Windows Search Service Search-Service Available [ ] Windows Server Backup Windows-Server-Backup Available [ ] Windows Server Migration Tools Migration Available [ ] Windows Standards-Based Storage Management WindowsStorageManage... Available [ ] Windows Subsystem for Linux Microsoft-Windows-Su... Available [ ] Windows TIFF IFilter Windows-TIFF-IFilter Available [ ] WinRM IIS Extension WinRM-IIS-Ext Available [ ] WINS Server WINS Available [ ] Wireless LAN Service Wireless-Networking Available [X] WoW64 Support WoW64-Support Installed [X] XPS Viewer XPS-Viewer Installed # WSLの機能が有効か確認 PS C:\Windows\system32> Get-WindowsFeature -Name Microsoft-Windows-Subsystem-Linux Display Name Name Install State ------------ ---- ------------- [ ] Windows Subsystem for Linux Microsoft-Windows-Su... Available # WSLの機能の有効化 PS C:\Windows\system32> Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux Do you want to restart the computer to complete this operation now? [Y] Yes [N] No [?] Help (default is "Y"): Y Path : Online : True RestartNeeded : True
WSLの機能を有効化すると再起動を求められるので、再起動します。ちなみにベアメタルインスタンスの起動・停止には時間がかかります。私の環境だと再起動に17分程度かかりました。
再起動に時間がかかる影響で、AWS基盤側では実行中
となっているもののOSが立ち上がらない状態が続くと、システムステータス、インスタンスステータスの接続性チェックに失敗します。私は動揺しましたが、気長に待ちましょう。
再起動後、WSLの機能が有効化されたか確認します。
PS C:\Windows\system32> Get-WindowsFeature -Name Microsoft-Windows-Subsystem-Linux Display Name Name Install State ------------ ---- ------------- [X] Windows Subsystem for Linux Microsoft-Windows-Su... Installed
有効化されたようですね。
次に、wsl --install
でWSL 2の設定をします。
PS C:\Windows\system32> wsl --install Copyright (c) Microsoft Corporation. All rights reserved. Usage: wsl.exe [Argument] [Options...] [CommandLine] Arguments for running Linux binaries: If no command line is provided, wsl.exe launches the default shell. --exec, -e <CommandLine> Execute the specified command without using the default Linux shell. -- Pass the remaining command line as is. Options: --distribution, -d <Distro> Run the specified distribution. --user, -u <UserName> Run as the specified user. Arguments for managing Windows Subsystem for Linux: --help Display usage information. --install [Options] Install additional Windows Subsystem for Linux distributions. For a list of valid distributions, use 'wsl --list --online'. Options: --distribution, -d [Argument] Downloads and installs a distribution by name. Arguments: A valid distribution name (not case sensitive). Examples: wsl --install -d Ubuntu wsl --install --distribution Debian --set-default-version <Version> Changes the default install version for new distributions. --shutdown Immediately terminates all running distributions and the WSL 2 lightweight utility virtual machine. --status Show the status of Windows Subsystem for Linux. --update [Options] If no options are specified, the WSL 2 kernel will be updated to the latest version. Options: --rollback Revert to the previous version of the WSL 2 kernel. Arguments for managing distributions in Windows Subsystem for Linux: --export <Distro> <FileName> Exports the distribution to a tar file. The filename can be - for standard output. --import <Distro> <InstallLocation> <FileName> [Options] Imports the specified tar file as a new distribution. The filename can be - for standard input. Options: --version <Version> Specifies the version to use for the new distribution. --list, -l [Options] Lists distributions. Options: --all List all distributions, including distributions that are currently being installed or uninstalled. --running List only distributions that are currently running. --quiet, -q Only show distribution names. --verbose, -v Show detailed information about all distributions. --online, -o Displays a list of available distributions for install with 'wsl --install'. --set-default, -s <Distro> Sets the distribution as the default. --set-version <Distro> <Version> Changes the version of the specified distribution. --terminate, -t <Distro> Terminates the specified distribution. --unregister <Distro> Unregisters the distribution and deletes the root filesystem. --mount <Disk> Attaches and mounts a physical disk in all WSL2 distributions. Options: --bare Attach the disk to WSL2, but don't mount it. --type <Type> Filesystem to use when mounting a disk, if not specified defaults to ext4. --options <Options> Additional mount options. --partition <Index> Index of the partition to mount, if not specified defaults to the whole disk. --unmount [Disk] Unmounts and detaches a disk from all WSL2 distributions. Unmounts and detaches all disks if called without argument.
wsl
のコマンドヘルプが表示されました。
Microsoft公式ドキュメントを確認すると、WSLの機能を既に有効化している状態だと、wsl --install
は動作しないようです。
上記のコマンドは、WSL がインストールされていない場合にのみ機能します。wsl --install を実行して WSL ヘルプ テキストが表示される場合は、wsl --list --online を実行して使用可能なディストリビューションの一覧を表示し、wsl --install -d を実行してディストリビューションをインストールしてみてください。
事前にWSLの機能(Microsoft-Windows-Subsystem-Linux
)を有効化する必要はなかったようですね。
WSLのデフォルトのバージョンを確認すると2
となっていることからWSL 2ではあるようです。
PS C:\Windows\system32> wsl --status Default Version: 2 Please enable the Virtual Machine Platform Windows feature and ensure virtualization is enabled in the BIOS.
それでは、公式ドキュメントに従って、使用可能なディストリビューションの一覧を表示して、Ubuntu 20.04をインストールします。
# 使用できるディストリビューション一覧を確認 PS C:\Windows\system32> wsl -l -o The following is a list of valid distributions that can be installed. Install using 'wsl --install -d <Distro>'. NAME FRIENDLY NAME Ubuntu Ubuntu Debian Debian GNU/Linux kali-linux Kali Linux Rolling openSUSE-42 openSUSE Leap 42 SLES-12 SUSE Linux Enterprise Server v12 Ubuntu-16.04 Ubuntu 16.04 LTS Ubuntu-18.04 Ubuntu 18.04 LTS Ubuntu-20.04 Ubuntu 20.04 LTS # Ubuntu 20.04のインストール PS C:\Users\Administrator> wsl --install --distribution Ubuntu-20.04 Downloading: Ubuntu 20.04 LTS Installing: Ubuntu 20.04 LTS Ubuntu 20.04 LTS has been installed. Launching Ubuntu 20.04 LTS...
すると、Ubuntu 20.04のウィンドウが開き、以下のようなエラーが出力されました。
Installing, this may take a few minutes... WslRegisterDistribution failed with error: 0x800701bc Error: 0x800701bc WSL 2 requires an update to its kernel component. For information please visit https://aka.ms/wsl2kernel Press any key to continue...
どうやらWSL 2で使用するLinuxカーネルを更新する必要があるようです。
PowerShellでパッケージをダウンロードしてきて、インストールします。
# WSL 2 Linux カーネル更新プログラムのパッケージのダウンロード PS C:\Users\Administrator> Invoke-WebRequest -Uri "https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi" -OutFile wsl_update_x64.msi # WSL 2 Linux カーネル更新プログラムのインストール PS C:\Users\Administrator> msiexec /i wsl_update_x64.msi /quiet
WSL 2 Linux カーネル更新プログラムのインストールが完了した後、再度Ubuntu 20.04を起動させます。すると、またしても以下のようなエラーが出力されました。
Installing, this may take a few minutes... WslRegisterDistribution failed with error: 0x80370102 Error: 0x80370102 The virtual machine could not be started because a required feature is not installed. Press any key to continue...
必要な機能がインストールされていないため、仮想マシンを起動できないようです。
調査したところ、VirtualMachinePlatform
という機能を有効化する必要があるようです。早速有効化してあげます。
# VirtualMachinePlatform が有効化されているか確認 PS C:\Windows\system32> Get-WindowsOptionalFeature -Online -featurename *Platform FeatureName : HypervisorPlatform DisplayName : Windows Hypervisor Platform Description : Enables virtualization software to run on the Windows hypervisor RestartRequired : Possible State : Disabled CustomProperties : FeatureName : VirtualMachinePlatform DisplayName : Virtual Machine Platform Description : Enables platform support for virtual machines RestartRequired : Possible State : Disabled CustomProperties : # VirtualMachinePlatform を有効化 PS C:\Windows\system32> Enable-WindowsOptionalFeature -online -featurename VirtualMachinePlatform Do you want to restart the computer to complete this operation now? [Y] Yes [N] No [?] Help (default is "Y"): Y Path : Online : True RestartNeeded : True
VirtualMachinePlatform
を有効化すると再起動を求められるので、再起動します。
再起動後、VirtualMachinePlatform
が有効になったことを確認します。
PS C:\Users\Administrator> Get-WindowsOptionalFeature -Online -featurename *Platform FeatureName : HypervisorPlatform DisplayName : Windows Hypervisor Platform Description : Enables virtualization software to run on the Windows hypervisor RestartRequired : Possible State : Disabled CustomProperties : FeatureName : VirtualMachinePlatform DisplayName : Virtual Machine Platform Description : Enables platform support for virtual machines RestartRequired : Possible State : Enabled CustomProperties :
それでは、三度Ubuntu 20.04を起動させます。すると、ユーザー名の入力が求められました。
ユーザー名やパスワードを入力すると、Ubuntu 20.04が起動しました。感激です。
Installing, this may take a few minutes... Please create a default UNIX user account. The username does not need to match your Windows username. For more information visit: https://aka.ms/wslusers Enter new UNIX username: non-97 New password: Retype new password: passwd: password updated successfully Installation successful! To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details. Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.10.16.3-microsoft-standard-WSL2 x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage System information as of Thu Jun 23 09:36:27 UTC 2022 System load: 0.13 Processes: 8 Usage of /: 0.4% of 250.98GB Users logged in: 0 Memory usage: 0% IPv4 address for eth0: 172.21.136.241 Swap usage: 0% 0 updates can be installed immediately. 0 of these updates are security updates. The list of available updates is more than a week old. To check for new updates run: sudo apt update This message is shown once once a day. To disable it please create the /home/non-97/.hushlogin file. non-97@EC2AMAZ-N3F7GIK:~$
wsl -l -v
やwsl --status
でも確認します。WSL 2でUbuntu 20.04が起動しているようです。カーネルバージョンも表示されていますね。
PS C:\Users\Administrator> wsl -l -v NAME STATE VERSION * Ubuntu-20.04 Stopped 2 PS C:\Windows\system32> wsl --status Default Version: 2 Windows Subsystem for Linux was last updated on 6/23/2022 The Windows Subsystem for Linux kernel can be manually updated with 'wsl --update', but automatic updates cannot occur due to your system settings. To receive automatic kernel updates, please enable the Windows Update setting: 'Receive updates for other Microsoft products when you update Windows'. For more information please visit https://aka.ms/wsl2kernel. Kernel version: 5.10.16
OS情報を並べて現実であることを確認します。確かにWindows Server 2022でWSL 2が使用できていることが分かります。
「wsl --install」で設定してみた
それでは、wsl --install
だけでWSL 2の設定ができるのかも確認します。
Microsoft公式ドキュメントによると、wsl --install
をすることで、以下の操作が行われるそうです。
- オプションの WSL および仮想マシン プラットフォームのコンポーネントを有効にする
- 最新の Linux カーネルをダウンロードしてインストールする
- WSL 2 を既定値として設定する
- Ubuntu Linux ディストリビューションをダウンロードしてインストールする
これはありがたいです。
新しくベアメタルインスタンスを起動して、wsl --install
でWSL 2の設定を行います。
# システム情報の確認 PS C:\Windows\system32> systeminfo Host Name: EC2AMAZ-KQ1VQ9H OS Name: Microsoft Windows Server 2022 Datacenter OS Version: 10.0.20348 N/A Build 20348 OS Manufacturer: Microsoft Corporation OS Configuration: Standalone Server OS Build Type: Multiprocessor Free Registered Owner: EC2 Registered Organization: Amazon.com Product ID: 00454-60000-00001-AA180 Original Install Date: 6/24/2022, 12:14:16 AM System Boot Time: 6/24/2022, 12:20:20 AM System Manufacturer: Amazon EC2 System Model: m5zn.metal System Type: x64-based PC Processor(s): 2 Processor(s) Installed. [01]: Intel64 Family 6 Model 85 Stepping 7 GenuineIntel ~3800 Mhz [02]: Intel64 Family 6 Model 85 Stepping 7 GenuineIntel ~3800 Mhz BIOS Version: Amazon EC2 1.0, 10/16/2017 Windows Directory: C:\Windows System Directory: C:\Windows\system32 Boot Device: \Device\HarddiskVolume1 System Locale: en-us;English (United States) Input Locale: N/A Time Zone: (UTC) Coordinated Universal Time Total Physical Memory: 196,241 MB Available Physical Memory: 192,091 MB Virtual Memory: Max Size: 200,081 MB Virtual Memory: Available: 196,111 MB Virtual Memory: In Use: 3,970 MB Page File Location(s): C:\pagefile.sys Domain: WORKGROUP Logon Server: N/A Hotfix(s): 3 Hotfix(s) Installed. [01]: KB5013890 [02]: KB5014678 [03]: KB5014030 Network Card(s): 1 NIC(s) Installed. [01]: Amazon Elastic Network Adapter Connection Name: Ethernet 3 DHCP Enabled: Yes DHCP Server: 172.31.0.1 IP address(es) [01]: 172.31.5.204 [02]: fe80::adef:90c8:43b:77a7 Hyper-V Requirements: VM Monitor Mode Extensions: Yes Virtualization Enabled In Firmware: Yes Second Level Address Translation: Yes Data Execution Prevention Available: Yes # WSL 2が設定されていないことを確認 PS C:\Windows\system32> wsl --status Copyright (c) Microsoft Corporation. All rights reserved. Usage: wsl.exe [Argument] Arguments: --install <Options> Install Windows Subsystem for Linux features. If no options are specified, the recommended features will be installed along with the default distribution. To view the default distribution as well as a list of other valid distributions, use 'wsl --list --online'. Options: --distribution, -d [Argument] Specifies the distribution to be downloaded and installed by name. Arguments: A valid distribution name (not case sensitive). Examples: wsl --install -d Ubuntu wsl --install --distribution Debian --list, -l [Options] Lists distributions. Options: --online, -o Displays a list of available distributions for install with 'wsl --install'. --help Display usage information. # WSLの機能が有効化されていないことを確認 PS C:\Windows\system32> Get-WindowsFeature -Name Microsoft-Windows-Subsystem-Linux Display Name Name Install State ------------ ---- ------------- [ ] Windows Subsystem for Linux Microsoft-Windows-Su... Available # VirtualMachinePlatform が有効化されていないことを確認 PS C:\Windows\system32> Get-WindowsOptionalFeature -Online -featurename *Platform FeatureName : HypervisorPlatform DisplayName : Windows Hypervisor Platform Description : Enables virtualization software to run on the Windows hypervisor RestartRequired : Possible State : Disabled CustomProperties : FeatureName : VirtualMachinePlatform DisplayName : Virtual Machine Platform Description : Enables platform support for virtual machines RestartRequired : Possible State : Disabled CustomProperties : # WSL 2の設定 PS C:\Windows\system32> wsl --install Installing: Virtual Machine Platform Virtual Machine Platform has been installed. Installing: Windows Subsystem for Linux Windows Subsystem for Linux has been installed. Downloading: WSL Kernel Installing: WSL Kernel WSL Kernel has been installed. Downloading: Ubuntu The requested operation is successful. Changes will not be effective until the system is rebooted. # WSLの機能が有効化されたことを確認 PS C:\Windows\system32> Get-WindowsFeature -Name Microsoft-Windows-Subsystem-Linux Display Name Name Install State ------------ ---- ------------- [X] Windows Subsystem for Linux Microsoft-Windows-Su... Installed # VirtualMachinePlatform が有効化されたことを確認 PS C:\Windows\system32> Get-WindowsOptionalFeature -Online -featurename *Platform FeatureName : HypervisorPlatform DisplayName : Windows Hypervisor Platform Description : Enables virtualization software to run on the Windows hypervisor RestartRequired : Possible State : Disabled CustomProperties : FeatureName : VirtualMachinePlatform DisplayName : Virtual Machine Platform Description : Enables platform support for virtual machines RestartRequired : Possible State : Enabled CustomProperties : # 設定を反映させるためにOSを再起動 PS C:\Windows\system32> Restart-Computer
OS再起動後、WSL 2の設定がされたことを確認します。
# システム情報の確認 PS C:\Windows\system32> systeminfo Host Name: EC2AMAZ-KQ1VQ9H OS Name: Microsoft Windows Server 2022 Datacenter OS Version: 10.0.20348 N/A Build 20348 OS Manufacturer: Microsoft Corporation OS Configuration: Standalone Server OS Build Type: Multiprocessor Free Registered Owner: EC2 Registered Organization: Amazon.com Product ID: 00454-60000-00001-AA180 Original Install Date: 6/24/2022, 12:14:16 AM System Boot Time: 6/24/2022, 12:39:25 AM System Manufacturer: Amazon EC2 System Model: m5zn.metal System Type: x64-based PC Processor(s): 2 Processor(s) Installed. [01]: Intel64 Family 6 Model 85 Stepping 7 GenuineIntel ~3800 Mhz [02]: Intel64 Family 6 Model 85 Stepping 7 GenuineIntel ~3800 Mhz BIOS Version: Amazon EC2 1.0, 10/16/2017 Windows Directory: C:\Windows System Directory: C:\Windows\system32 Boot Device: \Device\HarddiskVolume1 System Locale: en-us;English (United States) Input Locale: N/A Time Zone: (UTC) Coordinated Universal Time Total Physical Memory: 196,241 MB Available Physical Memory: 190,544 MB Virtual Memory: Max Size: 200,081 MB Virtual Memory: Available: 194,549 MB Virtual Memory: In Use: 5,532 MB Page File Location(s): C:\pagefile.sys Domain: WORKGROUP Logon Server: N/A Hotfix(s): 3 Hotfix(s) Installed. [01]: KB5013890 [02]: KB5014678 [03]: KB5014030 Network Card(s): 1 NIC(s) Installed. [01]: Amazon Elastic Network Adapter Connection Name: Ethernet 3 DHCP Enabled: Yes DHCP Server: 172.31.0.1 IP address(es) [01]: 172.31.5.204 [02]: fe80::adef:90c8:43b:77a7 Hyper-V Requirements: A hypervisor has been detected. Features required for Hyper-V will not be displayed. # WSLのデフォルトバージョンが2であることを確認 # カーネルのバージョンが表示されることを確認 PS C:\Windows\system32> wsl --status Default Version: 2 Windows Subsystem for Linux was last updated on 6/24/2022 The Windows Subsystem for Linux kernel can be manually updated with 'wsl --update', but automatic updates cannot occur due to your system settings. To receive automatic kernel updates, please enable the Windows Update setting: 'Receive updates for other Microsoft products when you update Windows'. For more information please visit https://aka.ms/wsl2kernel. Kernel version: 5.10.16 # WSL 2でディストリビューションがインストールされているか確認 PS C:\Windows\system32> wsl -l -v Windows Subsystem for Linux has no installed distributions. Distributions can be installed by visiting the Microsoft Store: https://aka.ms/wslstore
WSLのデフォルトバージョンが2であり、カーネルのバージョンも表示されることからWSL 2の設定がされたようです。なお、VirtualMachinePlatform
を有効化した影響か、システム情報を確認すると、Hyper-Vに必要な機能が表示されなくなりました。
下準備が済んだので、ディストリビューションのインストールをします。今回はUbuntu
にしました。
PS C:\Users\Administrator> wsl --install --distribution Ubuntu Downloading: Ubuntu Installing: Ubuntu Ubuntu has been installed. Launching Ubuntu...
インストールが完了すると、Ubuntuのウィンドウが起動し、ユーザー名の入力が求められました。
ユーザー名やパスワードを入力すると、Ubuntu 20.04が起動しました。圧倒的に簡単ですね。
Windows Terminalからのアクセス
ふと、Windows TerminalからUbuntuにアクセスできるか気になったので、Windows Terminalをインストールをしてみます。
当初、Windows Terminalのインストールは以下記事を参考に最新のバージョンをインストールしようとしました。
しかし、最新のWindows Terminalが求めるビルドバージョンが噛み合わないため、インストールしようとするとエラーになります。
# 最新のWindows Terminalのインストール PS C:\Users\Administrator> function Install-LatestWindowsTerminal () { # Find the latest MSIX installer url $latest = Invoke-RestMethod -Uri 'https://api.github.com/repos/microsoft/terminal/releases/latest' $msixUrl = $latest.assets | Where-Object { $_.browser_download_url -like '*.msixbundle' } | Select-Object -ExpandProperty browser_download_url -Last 1 # Download MSIX Write-Host -ForegroundColor Green "Download $msixUrl" $msixPath = Join-Path -Path ([IO.Path]::GetTempPath()) ($msixUrl -split '/')[-1] Invoke-WebRequest -Uri $msixUrl -OutFile $msixPath # Install MSIX Write-Host -ForegroundColor Green "Install $msixPath" Add-AppxPackage -Path $msixPath # Remove MSIX if (Test-Path -LiteralPath $msixPath) { Write-Host -ForegroundColor Green "Remove $msixPath" Remove-Item -LiteralPath $msixPath } Write-Host -ForegroundColor Green "Installation complete!" } PS C:\Users\Administrator> Install-LatestWindowsTerminal Download https://github.com/microsoft/terminal/releases/download/v1.13.11431.0/Microsoft.WindowsTerminal_Win11_1.13.11432.0_8wekyb3d8bbwe.msixbundle Install C:\Users\Administrator\AppData\Local\Temp\2\Microsoft.WindowsTerminal_Win11_1.13.11432.0_8wekyb3d8bbwe.msixbundle Add-AppxPackage : Deployment failed with HRESULT: 0x80073CFD, A Prerequisite for an install could not be satisfied. Windows cannot install package Microsoft.WindowsTerminal_1.13.11432.0_x64__8wekyb3d8bbwe because this package is not compatible with the device. The package requires OS version 10.0.22000.0 or higher on the Windows.Desktop device family. The device is currently running OS version 10.0.20348.768. NOTE: For additional information, look for [ActivityId] 3750ba21-876b-001a-4fc5-50376b87d801 in the Event Log or use the command line Get-AppPackageLog -ActivityID 3750ba21-876b-001a-4fc5-50376b87d801 At line:13 char:5 + Add-AppxPackage -Path $msixPath + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (C:\Users\Admini...bbwe.msixbundle:String) [Add-AppxPackage], Exception + FullyQualifiedErrorId : DeploymentError,Microsoft.Windows.Appx.PackageManager.Commands.AddAppxPackageCommand Remove C:\Users\Administrator\AppData\Local\Temp\2\Microsoft.WindowsTerminal_Win11_1.13.11432.0_8wekyb3d8bbwe.msixbundle Installation complete!
そのため、こちらのブログに記載のバージョンのWindows Terminalをインストールしました。
# Windows Terminalのインストーラーのダウンロード PS C:\Users\Administrator> Invoke-WebRequest -Uri https://github.com/microsoft/terminal/releases/download/v1.7.1091.0/Microsoft.WindowsTerminal_1.7.1091.0_8wekyb3d8bbwe.msixbundle -outfile Microsoft.WindowsTerminal_1.7.1091.0_8wekyb3d8bbwe.msixbundle # Windows Terminalのインストール PS C:\Users\Administrator> Add-AppxPackage -Path .\Microsoft.WindowsTerminal_1.7.1091.0_8wekyb3d8bbwe.msixbundle
インストール後、Windows TerminalからUbuntuにアクセスします。
問題なく操作できますね。
Windows Server 2022でもWSL 2は使えるぞ
Windows Server 2022のEC2インスタンスでWSL 2を起動してみました。
wsl --install
で簡単に設定できるのが非常に嬉しいですね。WindowsのクライアントOSを持っていない私でもWSL 2ライフを送ることができそうです。
そもそものWSL 2の機能について知りたい方は以下ドキュメントをご覧ください。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!